package org.kingtop.sys;

import org.kingtop.lang.ExceptionConfig;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;

/**
 * 系统初始化完成处理业务
 * @author 陈金波
 * @date   2018年1月24日 下午10:00:38
 */
public class SystemStartupListener implements ApplicationListener<ContextRefreshedEvent> {
	
	/** 
     * 是否已经初始化过了，确保只初始化一次 
     */  
    private static volatile boolean initialled = false;

	@Override
	public void onApplicationEvent(ContextRefreshedEvent event) {
		if(event.getApplicationContext().getParent() != null && initialled) {  
            return;  
        }
		if(!initialled) {
	        initialled = true;
	        contextInitialized();
		}
	}
	
	/**
	 * 初始化完成后调用
	 * @author 陈金波  
	 * @date   2018年1月24日 下午10:00:27  
	 * @return void
	 */
	protected void contextInitialized() {
		new Config();
		new ExceptionConfig();
	}
	/*public void contextInitialized(ServletContextEvent event) {
		Startup.init();
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				BaseCacheUtil.getInstance().initUsersCache();
			}
		}).start();
	}

	public void contextDestroyed(ServletContextEvent sce) {
	}*/
}
